package cn.lg.soar.general.service;

import cn.lg.soar.common.util.data.DataUtil;
import cn.lg.soar.general.entity.BizFile;
import cn.lg.soar.general.api.model.BizFileDTO;
import cn.lg.soar.general.api.model.FileVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 文件业务关系表
 * @author 41225
 * @since 2024-06-02
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface IBizFileService extends IService<BizFile> {

    /**
     * 保存业务附件
     * @param bizId
     * @param bizFiles
     * @return
     */
    boolean saveBizFile(Long bizId, Collection<BizFileDTO> bizFiles);

    /**
     * 保存业务附件
     * @param bizId
     * @param bizFiles
     * @return
     */
    default boolean saveBizFile(Long bizId, BizFileDTO...bizFiles) {
        return saveBizFile(bizId, DataUtil.arrayToList(bizFiles));
    }

    /**
     * 获取业务附件
     * @param bizId
     * @return
     */
    Map<String, List<FileVO>> getBizFile(Long bizId, Collection<String> bizTypes);

    /**
     * 获取业务附件
     * @param bizId 业务id
     * @param bizTypes 业务类型
     * @return
     */
    default Map<String, List<FileVO>> getBizFile(Long bizId, String...bizTypes) {
        return getBizFile(bizId, Arrays.asList(bizTypes));
    }

    /**
     * 删除业务附件
     * @param bizId 业务id
     * @param bizTypes 业务类型
     * @return
     */
    boolean removeBizFile(Long bizId, Collection<String> bizTypes);

    /**
     * 删除业务附件
     * @param bizId 业务id
     * @param bizTypes 业务类型
     * @return
     */
    default boolean removeBizFile(Long bizId, String...bizTypes) {
        return removeBizFile(bizId, Arrays.asList(bizTypes));
    }

}
